#include<iostream>
#include<pthread.h>
#include<unistd.h>
#include<cstdio>
#include<string>
using namespace std;

void *threadRoutine(void *args)
{
    int i = 0;
    while (true)
    {
        cout<<"新线程： "<<(char*)args<<" running... "<<endl;
        cout<<pthread_self()<<endl;
        sleep(1);
        i++;
        if(i == 5) break;
    }
    cout<<"new thread quit ..."<<endl;
    pthread_exit((void*)10);
}

int main()
{
    pthread_t tid;
    pthread_create(&tid,nullptr,threadRoutine,(void *)" thread 1 ");

    void *ret = nullptr;
    pthread_join(tid,&ret);//默认阻塞等待线程退出
    cout<<pthread_self()<<endl;
    cout<<"main thread wait done ... main quit ...: new thread quit : "<< (long long)ret<<"\n";


    // while (true)
    // {
    //     cout<<"main线程: "<< " running ... "<<endl;
    //     sleep(1);
    // }
    
    return 0;
}



// int x = 100;

// void show (const string &name)
// {
//     cout<< name <<", pid:"<<getpid()<<" "<< x <<"\n"<<endl;
// }

// void *threadRun(void *args)
// {
//     const string name = (char*)args;
//     while (true)
//     {
//         show(name);
//         sleep(1);
//     }
    
// }
// int main()
// {
//     pthread_t tid[5];
//     char name[64];
//     for(int i = 0;i<5;i++)
//     {
//         snprintf(name,sizeof name,"%s-%d","thread",i);
//         pthread_create(tid+i,nullptr,threadRun,(void*)name);
//         sleep(1);
//     }

//     while (true)
//     {
//         cout<<"main tread,pid: \n"<<getpid()<<endl;
//         sleep(3);
//     }
    
//     return 0;
// }


